package com.example.rabbitdemo.config.exchange;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;


/**
 * @author 周宇
 * @version 1.0 date: 2019/7/23 17:05
 * @description: FanoutExchange, 广播模式，生产者将消息分发到每个queue，不需要指定routing_key;消费者指定queue即可
 * 实现发布订阅模式：生产者将消息发送到Broker的交换机中，由交换机将消息投递到与之绑定的每一个队列中，每个消费者监听自己的队列，从队列中获取生产者发送的消息
 */
public class FanoutExchangeConfig {
    //声明一个fanout类型的交换机
    @Bean
    public FanoutExchange fanoutExchange(){
        return new FanoutExchange("PS_fanoutExchange");
    }

    //声明两个队列，分别与上面声明的fanout交换机进行绑定
    @Bean
    public Queue queue6(){
        return new Queue("queue6");
    }

    @Bean
    public Queue queue7(){
        return new Queue("queue7");
    }

    //绑定queue6
    @Bean
    public Binding binding6(){
        return BindingBuilder.bind(queue6()).to(fanoutExchange());
    }

    //绑定queue7
    @Bean
    public Binding binding7(){
        return BindingBuilder.bind(queue7()).to(fanoutExchange());
    }
}
